<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    </head>
    <body>
    <script>
        /*
         *  forEach除了接受一个必须的回调函数参数，
            还可以接受一个可选的上下文参数（改变回调函数里面的this指向）（第2个参数）
            array.forEach(callback,[ thisObject])
         */

         var database = {
             users: ['张含韵','江一燕','李小璐'],
             sendEmail: function(user){
                 if(this.isValidUser(user)){
                     console.log("你好,"+user);
                 }else{
                     console.log("抱歉,"+user+",你不是本家人");
                 }
             },
             isValidUser: function(user){
                 return /^张/.test(user);
             }
         }

         //在第二个参数中传入本身,sendEmail方法中的this就是指向database
         database.users.forEach(database.sendEmail,database);

         //如果不传入第二个参数,sendEmail中的this就是指向window对象.
         //并没有sendEmail方法.会报错
    </script>
    </body>
</html>